1. Field of the Invention
Embodiments of the invention relate to tools used to develop application software. More specifically, embodiments of the invention provide an enhanced integrated development environment (IDE) for managing application source code, database systems, and related artifacts.
2. Description of the Related Art
Developing software applications is a complex task, and IDE tools are available to assist computer programmers with the development process. Currently, IDE tools are available to assist programmers developing applications in a variety of programming languages (e.g., Java® .net, C, C++, C#, etc.). These tools are typically configured with features such as auto-indenting, syntax highlighting, type checking, and a variety of other features that assist the development process. An IDE tool usually includes a text editor that visually displays errors as source code is typed, allowing a developer to correct errors before proceeding with the next line to code. Typically, IDE tools are optimized for different programming languages and errors are identified based on the programming language being used by the developer, often determined a suffix of a project file (e.g., .cpp for a c++ program or .java for a Java® program).
However, application programs have long since ceased to be developed as a single application built from a group of source code files. Instead, multiple applications interact with one another to provide users with a particular service. Frequently, for example, developers compose applications that interact with a database engine. The database may be developed with the application, but applications are also developed to interact with (often complex) existing database systems.
Typically, such an application may be configured with (or be configured to generate) a number of database queries (e.g., SQL statements) as well as the code needed to connect to the database, submit a query and receive results. Further, many object-to-relational frameworks exist for moving data between a database and an application program. Similarly, an application server may interact with a database and a web server to provide a web-based application. Part of the application code may create persistence for user data using database queries stored in XML files. More generally, database applications such as these typically have to create/consume numerous artifacts based on the business needs, inter-component interactions and best practices. Commonly used artifacts in a database application are SQL statements in Java code, stored procedures (which internally could be written in SQL/Java or another language), xml files, SQL files from database projects, etc.
To build these applications, developers typically interact with development tools customized for each distinct type of artifact. For example, as noted above, IDE tools may be used to compose source code in a variety of programming languages. Similarly, database tools may be used to create database models and compose queries using visual tools, etc. Each of these artifacts may have development tools within their own area/view/perspective/module within an IDE. That is, Java developers use a Java perspective of an IDE tool to build Java applications, database administrators use a data perspective of the IDE tool to build and improve SQL scripts or procedures. However, while many of the results of a development effort overlap significantly and interact with one another, the development tools themselves do not include mechanisms for connecting different aspects of the development process with one another.